﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DAL;
using BLL;
using NLog;

namespace QLTTTH
{
    public partial class UCThietBi : DevExpress.XtraEditors.XtraUserControl
    {
        protected static Logger logger = LogManager.GetCurrentClassLogger();
        public UCThietBi()
        {
            InitializeComponent();
        }

        private void UCThietBi_Load(object sender, EventArgs e)
        {
            LoadDsthietBi();
        }
        private void LoadDsthietBi()
        {
            var aResult = ThietBiManager.LayDanhSachThietBi();
            if (aResult.Success)
                dgvDanhSach.DataSource = aResult.Result;
            else
                Log(aResult);
        }
        private void Log(ActionResult aResult)
        {
            foreach (var ex in aResult.Exceptions)
            {
                logger.Error(ex);
            }
        }
        private void btnChiTiet_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xem chi tiết thiết bị.");
            var frm = new frmThongTinThietBi();
            frm.FillControl(GetThietBiListView());
            frm.ShowDialog();
        }
        private ThietBi GetThietBiListView()
        {
            var tb = new ThietBi();
            tb.MaTB = int.Parse(grvThietBi.GetFocusedRowCellValue("MaTB").ToString());
            tb.TenTB = grvThietBi.GetFocusedRowCellValue("TenTB").ToString();
            tb.ChucNang = grvThietBi.GetFocusedRowCellValue("ChucNang").ToString();
            tb.TrangThai = grvThietBi.GetFocusedRowCellValue("TrangThai").ToString();
            tb.MaPhong = int.Parse(grvThietBi.GetFocusedRowCellValue("MaPhong").ToString());
            return tb;
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng thêm thiết bị.");
            var frm = new frmThongTinThietBi();
            frm.sendData = new frmThongTinThietBi.SendData(ThemThietBi);
            frm.BatNutLuu();
            frm.ShowDialog();
        }
        private void ThemThietBi(ThietBi tb)
        {
            var aResult = ThietBiManager.ThemThietBi(tb);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Thêm thiết bị thành công.");
                LoadDsthietBi();
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Thêm thiết bị không thành công.");
            }
        }

        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xóa thiết bị.");
            if (XtraMessageBox.Show("Bạn có muốn xóa thiết bị này", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                int maTB;

                for (int i = 0; i < grvThietBi.RowCount; i++)
                {
                    if (grvThietBi.IsRowSelected(i))
                    {
                        maTB = int.Parse(grvThietBi.GetRowCellDisplayText(i, "MaTB").ToString());
                        var aResult = ThietBiManager.XoaThietBi(maTB);
                        if (!aResult.Success)
                        {
                            Log(aResult);
                            XtraMessageBox.Show("Xóa thiết bị không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }
                }
                XtraMessageBox.Show("Xóa thiết bị thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvThietBi.DeleteSelectedRows();
            }

        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng cập nhật thiết bị.");
            var frm = new frmThongTinThietBi();
            frm.FillControl(GetThietBiListView());
            frm.sendData = new frmThongTinThietBi.SendData(CapNhatThietBi);
            frm.BatNutLuu();
            frm.ShowDialog();
        }
        private void CapNhatThietBi(ThietBi tb)
        {
               var aResult = ThietBiManager.CapNhatThietBi(tb);
               if (aResult.Success)
               {
                   XtraMessageBox.Show("Cập nhật thông tin thiết bị thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   grvThietBi.SetFocusedRowCellValue("TenTB", tb.TenTB);
                   grvThietBi.SetFocusedRowCellValue("ChucNang", tb.ChucNang);
                   grvThietBi.SetFocusedRowCellValue("TrangThai", tb.TrangThai);
                   grvThietBi.SetFocusedRowCellValue("MaPhong", tb.MaPhong);
               }
            else
               {
                    Log(aResult);
                    XtraMessageBox.Show("Cập nhật thông tin thiết bị không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
               }

        }

        private void btnTimKiem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng tìm kiếm thiết bị.");
            grvThietBi.ShowFindPanel();
        }
    }
}
